// F封装axios 数据请求
// 01: 将axios 从 node_modules中导入
import axios from 'axios';
//02: 创建一个axios 的实例
// 注意: instance 就是axios
// instance 其实相当于改装过的axios 
const instance = axios.create({
    baseURL: 'http://47.94.148.165/admin', // 基础请求地址
    timeout: 5000,  // 请求的延时时间, 当前端发起请求后多少秒 请求请求自动中断
    headers: { 'Content-Type': 'application/json' } //只针对post请求其作用 设置post 请求头参数的提交格式
});


//02-1 该配置和02配置一样, 只不过如下是一个一个单独配置的
// axios.defaults.baseURL = 'https://api.example.com';
// axios.defaults.timeout = 5000;
// axios.defaults.headers.post['Content-Type'] = 'application/json';


//03: 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在使用axios 请求数据前, 此时请求还没有发送给后端,被我拦截器拦下来了
    // 可以在该位置做一个请求的配置,最常用的就是在该位置添加 token,
    // 为什么使用token  因为http 请求时无状态的, 两个请求之间没有任何关联,所以需要 
    // 上一次请求时, 返回token, 作为下一次请求校验
    // console.log('config', config);
    // console.log(JSON.parse(localStorage.getItem('vuex')).userinfo.token);
    if (localStorage.getItem('vuex')) {
        //只有登录后才会有token
        config.headers.token = JSON.parse(localStorage.getItem('vuex')).userinfo.token
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

//04: 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 当响应发给前端前, 被响应拦截器拦截,该位置一般可以用来 
    // 01: 根据后端返回的状态码 来对所有的响应做一个处理 例如 提示 
    // 02: 更新token 用来做登录的时长校验
    //   console.log('response', response);
    ElMessage({
        message: response.data.message,
        type: response.data.code == 200 ? 'success' : 'error',
        duration: 1000
    })
    return response;
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});


//05:导出 instance
export default instance


